/*
 * soft_spi.c
 *
 *  Created on: 2025年4月27日
 *      Author: cmy_j
 */
#include "soft_spi.h"
#include "esp_rom_sys.h"

void delay_ms(uint32_t ms)
{
	vTaskDelay(ms / portTICK_PERIOD_MS);
}

void delay_us(uint32_t us)
{
	esp_rom_delay_us(us);
}


void SPI_GPIO_Init(void)
{
	gpio_reset_pin(SPI_SCLK);
	gpio_reset_pin(SPI_MOSI);
	gpio_reset_pin(SPI_MRES);
//	gpio_reset_pin(SPI_MISO);
	gpio_reset_pin(SPI_RCK);

	gpio_set_direction(SPI_SCLK, GPIO_MODE_OUTPUT);    //配置引脚为输出模式
	gpio_set_direction(SPI_MOSI, GPIO_MODE_OUTPUT);    //配置引脚为输出模式
	gpio_set_direction(SPI_MRES, GPIO_MODE_OUTPUT);    //配置引脚为输出模式
//	gpio_set_direction(SPI_MISO, GPIO_MODE_OUTPUT);    //配置引脚为输出模式
	gpio_set_direction(SPI_RCK, GPIO_MODE_OUTPUT);    //配置引脚为输出模式
}


/******************************************************************************
      函数说明：SPI串行数据写入函数
      入口数据：dat  要写入的串行数据
      返回值：  无
******************************************************************************/
void SPI_Writ_Bus(uint8_t dat) 
{	
	uint8_t i;
//	SPI_CS_Clr();
	for(i=0;i<8;i++)
	{			  
		SPI_SCLK_Clr();
		if(dat&0x80)
		{
		   SPI_MOSI_Set();
		}
		else
		{
		   SPI_MOSI_Clr();
		}
		SPI_SCLK_Set();
		dat<<=1;
	}	
//  SPI_CS_Set();	
}


/******************************************************************************
      函数说明：SPI写入数据
      入口数据：dat 写入的数据
      返回值：  无
******************************************************************************/
void SPI_WR_DATA8(uint8_t dat)
{
	SPI_Writ_Bus(dat);
}

/******************************************************************************
      函数说明：SPI写入数据
      入口数据：dat 写入的数据
      返回值：  无
******************************************************************************/
void SPI_WR_DATA(uint64_t dat)
{
	SPI_Writ_Bus(dat>>40);
	SPI_Writ_Bus(dat>>32);
	SPI_Writ_Bus(dat>>24);
	SPI_Writ_Bus(dat>>16);
	SPI_Writ_Bus(dat>>8);
	SPI_Writ_Bus(dat);
}




